#include <iostream>
#include <set> // 红黑树
#include "global.hpp"

struct Student
{
    int id;
    std::string name;
};

bool operator<(const Student &s1, const Student &s2)
{
    return s1.id < s2.id;
}

std::ostream &operator<<(std::ostream &os, const Student &s)
{
    std::cout << s.id << " " << s.name << std::endl;
    return os;
}

int main()
{
    // std::set<int, std::greater<int>> s; // std::greater 由大到小排
    std::set<int> s;
    s.insert(3);
    s.insert(1);
    s.insert(2);

    // // s.erase(3);  // 按值删
    // auto ite = s.find(3); // 按值查，返回值是迭代器
    // std::cout << *ite << std::endl;
    // Print(s);

    // 放置自定义类型，需要重载< 要全局重载
    // std::set<Student> s; // std::greater 由大到小排
    // std::multiset<Student> s;
    // s.insert({1, "zhangsan"});
    // s.insert({3, "wangwu"});
    // s.insert({2, "lisi"});

    // s.insert({1,"zhaoliu"});  // 不能插入相同的值  值唯一

    // auto ite = s.find({1,""});     //multiset 只能找第一个值(如果有两个值)
    // std::cout<<*ite<<std::endl;
    Print(s);
    return 0;
}
